package ShuZu;
/**数组的定义，数组结构，数组的赋值*/
import java.util.Scanner;

public class Array {
    public static void main(String[] args) {
        /*
        数组可以存放多个同一类型的数据数组也是一种数据类型，是引用类型。
        即 数（数据）组（一组）就是一组数据

        数组的动态初始化：类型一
       *数据类型[] 数组名= new 数据类型[大小]
       *int[] a = new int[5]   //创建了一个数组，名字为 a ，存放 5 个int

       数组的静态初始化：  语法：
      *数据类型[] 数组名 = {元素值，元素值，元素值...};
        int[] a = {1,2,3,4,5};
        int[] a = new int[]{1,2,3,4,5};
        {1,2,3,4,5} 表示数组的 值/元素 依次表示数组的第几个元素
        我们可以通过 a[下标] 来访问数组元素
        下标是从 0 开始进行编号
        比如第一个元素就是 a[0],第二个元素是 a[1]，以此类推

        *通过 数组名.length 得到数组的 大小/长度
        通过 for 循环就可以循环访问 数组的 元素/值
        数组一旦创建,长度不可改变,如果想要增加或者删除数组中的元素
		需要创建一个新长度的数组,再将原数组的内容复制过去

		 *char类型的数组在底层代码中做了处理,可以直接打印数组中的具体元素
		 * 除了char类型的数组以外,任何其他类型的数组想要打印出数组中的 具体元素
		 * 需要使用数组的工具:Arrays.toString(数组名)

		 *对数组进行排序,对于基本类型的数组使用的是优化后的快速排序算法,效率高
         *对引用类型数组,使用的是优化后的合并排序算法
		 *Arrays.sort(数组)

         *把数组赋值成一个指定长度的新数组
         *新数组的长度 大于 原数组, 相当于复制,并增加位置
         *新数组的长度 小于 原数组, 相当于截取一部分数据
         *Arrays.copyOf(数组，新的长度)

        数组中的元素可以是任何数据类型，包括基本类型和引用类型，但是不能混用  （类型要匹配或者可以自动转换，还有强转）
        数组创建后，如果没有赋值，有默认值：
        int 0, short 0, long 0, byte 0, double 0.0, float 0.0, char \u0000, boolean false, String null
         */

        int [] a = {12,34,56,23,34};
        int b = 0;
        for (int i = 0;i < 5;i++){
            System.out.println("第"+ (i+1) +"个元素的值="+ a[i]);
            b += a[i];
        }
        System.out.println("数组长度"+ a.length);



        double scores [] = new double[5];//创建一个数组，大小为5
        Scanner scanner = new Scanner(System.in);
        //循环输入
        for (int k = 0;k < scores.length;k++){  //scores.length 表示数组的大小
            System.out.println("请输入第"+(k+1)+"个元素的值");
            scores[k] = scanner.nextDouble();//数组获取控制台输入的值
        }

        //输出，遍历数组
        for (int k = 0;k < scores.length;k++){
            System.out.println("第"+(k+1)+"个元素的值="+scores[k]);
        }
    }
}
